Переменные окружения
Переменные окружения используются для изменения некоторых низкоуровневых настроек Xray.
Их можно задать как в разделе env файла конфигурации, так и традиционным способом через окружение процесса перед запуском Xray.
Имена переменных
Встроенные переменные Xray поддерживают как имена в нижнем регистре с точками, так и имена в верхнем регистре с символами подчёркивания, например xray.location.asset и XRAY_LOCATION_ASSET. Если существуют обе формы, приоритет имеет форма с точками.
Далее на этой странице используется форма с точками; при настройке через командную оболочку или диспетчер служб для лучшей совместимости рекомендуется форма в верхнем регистре с символами подчёркивания.
EnvObject
EnvObject соответствует разделу env в файле конфигурации и представляет собой набор имён и значений переменных окружения.
{
"env": {
"xray.location.asset": "/usr/local/share/xray",
"xray.buf.readv": "true",
"xray.ray.buffer.size": "2"
// ...
}
}2
3
4
5
6
7
8
имя переменной окружения: string
Имя и значение каждой переменной окружения должны быть строками. После чтения и объединения всех файлов конфигурации Xray записывает элементы env в окружение текущего процесса перед созданием модулей.
TIP
При использовании нескольких файлов конфигурации их разделы env объединяются по ключам. Одинаковый ключ из более позднего файла заменяет предыдущее значение.
Раздел env задаёт имя именно в записанном виде и заменяет существующую переменную процесса с точно таким же именем.
WARNING
Раздел env применяется только после того, как файлы конфигурации были найдены, прочитаны и объединены. Поэтому, чтобы следующие три параметра повлияли на текущий запуск, их необходимо передать через окружение процесса до запуска Xray. Если записать их в раздел env файла конфигурации, они не повлияют на поиск или разбор этого файла:
xray.json.strictxray.location.configxray.location.confdir
Настройка переменных окружения процесса
В следующих примерах задаются путь к файлам ресурсов и строгий анализатор JSON:
# Задать переменные в текущей оболочке и запущенных из неё процессах
export XRAY_LOCATION_ASSET=/usr/local/share/xray
export XRAY_JSON_STRICT=true
# Либо задать их только для одного запуска Xray, разделяя пробелами
XRAY_LOCATION_ASSET=/usr/local/share/xray XRAY_JSON_STRICT=true xray run2
3
4
5
6
# Задать переменные в текущем сеансе PowerShell и запущенных из него процессах
$env:XRAY_LOCATION_ASSET = "C:\Xray"
$env:XRAY_JSON_STRICT = "true"2
3
:: Задать переменные в текущем сеансе CMD и запущенных из него процессах
set "XRAY_LOCATION_ASSET=C:\Xray"
set "XRAY_JSON_STRICT=true"2
3
# Задать переменные в разделе [Service] службы Xray
[Service]
Environment="XRAY_LOCATION_ASSET=/usr/local/share/xray"
Environment="XRAY_JSON_STRICT=true"2
3
4
Встроенные переменные Xray
Путь к файлам ресурсов
- Имя:
xray.location.asset. - Значение по умолчанию: определённые каталоги FHS или каталог исполняемого файла Xray.
Эта переменная задаёт каталог, содержащий файлы geoip.dat и geosite.dat. Если она не указана, программа ищет файлы ресурсов в следующем порядке:
./
/usr/local/share/xray
/usr/share/xray2
3
Расположение файла конфигурации
- Имя:
xray.location.config. - Значение по умолчанию: каталог исполняемого файла Xray.
Эта переменная задаёт каталог, содержащий файл config.json.
Запись в разделе env файла конфигурации не действует, поскольку Xray находит файл конфигурации до чтения этого раздела.
Каталог с несколькими конфигурациями
- Имя:
xray.location.confdir. - Значение по умолчанию:
"".
Файлы .json из этого каталога читаются в порядке имён как несколько файлов конфигурации.
Запись в разделе env файла конфигурации не действует, поскольку Xray находит каталог конфигурации до чтения этого раздела.
Этот параметр имеет более низкий приоритет, чем аргумент запуска confdir.
Строгий синтаксический анализатор JSON
- Имя:
xray.json.strict. - Значение по умолчанию:
false.
По умолчанию при запуске Xray использует собственный синтаксический анализатор JSON, который удаляет из конфигурации комментарии и другие нестандартные символы. Если файлы конфигурации строго соответствуют стандарту JSON (RFC 8259), этот параметр позволяет использовать стандартный анализатор, способный быстрее обрабатывать очень большие конфигурации.
Запись в разделе env файла конфигурации не действует, поскольку Xray должен выбрать анализатор JSON до чтения этого раздела.
Другие доступные переменные
xray.location.certxray.buf.readvxray.buf.splicexray.vmess.paddingxray.cone.disabledxray.ray.buffer.sizexray.browser.dialerxray.xudp.showxray.xudp.basekeyxray.tun.fd
Эти параметры предназначены для специализированных сценариев. Их точное назначение можно узнать из исходного кода.